package com.bdqn.oa.dao;

import com.bdqn.oa.entity.Attendance;
import com.bdqn.oa.utils.Page;

import java.sql.SQLException;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author zhowei
 * @date 2022/7/20 15:05
 */
public interface AttendanceDao {
    /**
     * 上班打卡
     * @param attendance
     * @return
     */
    public int insertMorningAtt(Attendance attendance) throws SQLException;

    /**
     * 下班打卡，通过员工id查找上班打卡数据，新增下班打卡时间
     * @param
     * @return
     */
    public int insertAfternoonTimeAtt(Attendance attendance) throws SQLException;

    /**
     * 获取某员工的打卡数量
     * @param id
     * @return
     * @throws SQLException
     */
    public long countById(Integer id) throws SQLException;

    /**
     * 通过员工id查询所有考勤记录
     * @param id
     * @return
     */
    public List<Attendance> getAttendByEid(Integer id ) throws SQLException;


    /**
     * 通过员工id查询所有考勤的分页记录
     * @param id
     * @return
     */
    public Page<Attendance> getAttendByEidOfPage(Integer id , long pageNumber, long pageSize) throws SQLException;

    /**
     * 获取某时间内员工打卡总数
     * @return
     */
    public int countAttByDate(LocalDateTime date, Integer id) throws SQLException;
    /**
     * 查询某员工某时间的打卡记录
     * @param id
     * @return
     */
    public Attendance getAttendByEidByDate(Integer id, LocalDateTime date) throws SQLException;

    /**
     * 查询某员工某时间段内的所有打卡记录（支持分页）
     * @param id
     * @return
     */
    public Page<Attendance> getAttendByEidOfDate(Integer id, LocalDateTime start,LocalDateTime end,long pageNumber,long pageSize) throws SQLException;
}
